package com.itheima.dubbo.interfaces;

import com.itheima.commons.pojo.mongo.UserLike;

import java.util.List;

/**
 * @author yaohu
 * @date 2021/12/13
 * @Version 1.0
 * @describe
 */
public interface UserLikeApi {

    /**
     * 添加右滑喜欢用户
     *
     * @param userLike
     */
    void likeUser(UserLike userLike);

    /**
     * 查询互相喜欢数
     *
     * @param userId 用户id
     * @return
     */
    Long queryMutualLikeCount(Long userId);

    /**
     * 查询喜欢数
     *
     * @param userId 用户id
     * @return 喜欢数
     */
    Long queryLikeCount(Long userId);

    /**
     * 查询粉丝数
     *
     * @param userId 用户id
     * @return 粉丝数
     */
    Long queryFanCount(Long userId);

    /**
     * 分页查询相互喜欢人的列表
     *
     * @param userId   用户id
     * @param page
     * @param pageSize
     * @return
     */
    List<UserLike> queryMutualLikeList(Long userId, Integer page, Integer pageSize);

    /**
     * 查询用户A是否喜欢B
     *
     * @param userId     A
     * @param likeUserId B
     * @return
     */
    Boolean isAlreadyLove(Long userId, Long likeUserId);

    /**
     * 分页用户查询喜欢人的列表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    List<UserLike> queryLikeList(Long userId, Integer page, Integer pageSize);

    /**
     * 分页查询用户粉丝列表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    List<UserLike> queryFanList(Long userId, Integer page, Integer pageSize);

    /**
     * 判断两个用户是否相互喜欢
     * @param userId
     * @param likeUserId
     * @return
     */
    boolean isMutualLike(Long userId, Long likeUserId);

    /**
     * 删除喜欢的人
     *
     * @param userId
     * @param likeUserId
     */
    void notLikeUser(Long userId, Long likeUserId);
}
